<?php
/**
 * 命令行密码生成工具
 * 
 * 使用方法:
 * php generate_password.php [长度] [选项]
 * 
 * 选项:
 * --simple    生成简单密码 (只包含小写字母和数字)
 * --strong    生成强密码 (包含大小写字母、数字和特殊字符)
 * --no-upper  不包含大写字母
 * --special   包含特殊字符
 * --help      显示帮助信息
 * 
 * 示例:
 * php generate_password.php          # 生成默认密码 (长度为8)
 * php generate_password.php 12       # 生成长度为12的密码
 * php generate_password.php --simple # 生成简单密码
 * php generate_password.php --strong # 生成强密码
 */

// 引入密码生成器类
require_once __DIR__ . '/extend/PasswordGenerator.php';

// 解析命令行参数
$options = getopt('', ['simple', 'strong', 'no-upper', 'special', 'help']);
$args = array_values(array_filter($argv, function($arg) {
    return $arg[0] !== '-' && $arg !== $argv[0];
}));

// 显示帮助信息
if (isset($options['help'])) {
    echo <<<HELP
命令行密码生成工具

使用方法:
php generate_password.php [长度] [选项]

选项:
--simple    生成简单密码 (只包含小写字母和数字)
--strong    生成强密码 (包含大小写字母、数字和特殊字符)
--no-upper  不包含大写字母
--special   包含特殊字符
--help      显示帮助信息

示例:
php generate_password.php          # 生成默认密码 (长度为8)
php generate_password.php 12       # 生成长度为12的密码
php generate_password.php --simple # 生成简单密码
php generate_password.php --strong # 生成强密码

HELP;
    exit(0);
}

// 确定密码长度
$length = isset($args[0]) && is_numeric($args[0]) ? (int)$args[0] : 8;

// 生成密码
if (isset($options['simple'])) {
    $password = PasswordGenerator::generateSimple($length);
    echo "生成的简单密码 (长度 $length): $password\n";
} elseif (isset($options['strong'])) {
    $password = PasswordGenerator::generateStrong($length);
    echo "生成的强密码 (长度 $length): $password\n";
} else {
    $includeUppercase = !isset($options['no-upper']);
    $includeSpecialChars = isset($options['special']);
    $password = PasswordGenerator::generate($length, $includeUppercase, $includeSpecialChars);
    
    echo "生成的密码 (长度 $length): $password\n";
    echo "包含: 小写字母, 数字";
    if ($includeUppercase) echo ", 大写字母";
    if ($includeSpecialChars) echo ", 特殊字符";
    echo "\n";
}